import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

public class Archivos {
	/***
	 * 
	 * @param nombreCompletoArchivo
	 *            Se le pasa por parametro un archivo
	 * 
	 * @return se devuelve una lista con las lineas leidas del archivo
	 */
	public static String[] leerArchivo(String nombreCompletoArchivo) {
		FileReader fr;
		ArrayList<String> listaLineasArchivo = new ArrayList<String>();
		try {
			fr = new FileReader(nombreCompletoArchivo);
			BufferedReader br = new BufferedReader(fr);
			String lineaActual = br.readLine();
			while (lineaActual != null) {
				listaLineasArchivo.add(lineaActual);
				lineaActual = br.readLine();
			}
			br.close();
			fr.close();
		} catch (FileNotFoundException e) {
			System.out.println("Error al leer el archivo "
					+ nombreCompletoArchivo);
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("Error al leer el archivo "
					+ nombreCompletoArchivo);
			e.printStackTrace();
		}
		return listaLineasArchivo.toArray(new String[0]);
	}

	/***
	 * 
	 * @param archivo
	 *            nombre del archivo en el cual va a escribirse el contenido
	 * @param contenido
	 *            contenido a escribir en el archivo
	 * @param agregarAlFinal
	 *            booleano que indica si el archivo a ser sobreescribido o si se
	 *            agrega el contenido al final
	 */
	public synchronized static void escribirArchivo(String archivo,
			String contenido, boolean agregarAlFinal) {
		FileWriter fw;
		try {
			fw = new FileWriter(archivo, agregarAlFinal);
			BufferedWriter bw = new BufferedWriter(fw);
			bw.write(contenido);
			bw.close();
			fw.close();
		} catch (IOException e) {
			System.out.println("Error al escribir el archivo " + archivo);
			e.printStackTrace();
		}
	}

	/***
	 * 
	 * Carga los clientes en una cola, o de boleteria o de red de cobranza,
	 * segun la eleccion del cliente
	 * 
	 */
	public void clientes(String[] lineasDeArchivo,
			ColaClientes colaDeBoleteria, ColaClientes colaDeRedDeCobranza) {
		ColaClientes aux = new ColaClientes();
		ColaClientes aux2 = new ColaClientes();
		for (int i = 0; i < lineasDeArchivo.length; i++) {
			String[] datos = lineasDeArchivo[i].split(",");
			Cliente cliente = new Cliente(datos[0], Integer.parseInt(datos[1]),
					Integer.parseInt(datos[2]), datos[3], datos[4], datos[5],
					Integer.parseInt(datos[6]), Integer.parseInt(datos[7]));
			if (datos[5].equalsIgnoreCase("Boleteria")) {
				colaDeBoleteria.insertarSegunOrdenDeLlegada(cliente);
			} else
				colaDeRedDeCobranza.insertarSegunOrdenDeLlegada(cliente);
		}

	}
}
